Sometimes it is not the Oracle Cost Based Optimizer that is getting it wrong. A well-meaning programmer may have added an inappropriate hint to a SQL that actually causes it to run slower. The most classic examples of this are the RULE and INDEX hints.
Check your SQL for hints. If you are selecting from a view, also check the view definition for hints.
In versions of Oracle prior to 7.3, the Cost Based Optimizer was frequently unreliable, so the RULE hint was used to make the execution plans predictable. Unfortunately this also eliminates a number of CBO-only execution plans. eg. Hash joins and bitmap indexes.
With the INDEX hint, it is a common misconception that indexes make all queries run faster.
Make sure your statistics are up-to-date, and confirm with the DBA that there are no unusual database settings that would affect the execution plan (eg. OPTIMIZER_GOAL should be CHOOSE, and HASH_JOIN_ENABLED should be TRUE). Now remove the existing hints from the SQL and try it again. If not, leave the hints off and follow the other steps in this guide to tune the SQL.